package day03.io;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * @ClassName BOSDemo
 * @Description TODO
 * @Author xinghaiyang
 * @Date 2023/3/19 14:23
 * @Version 1.0
 *
 * 缓冲输出流写出时的缓冲区问题
 **/
public class BOSDemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("bos.txt");
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        String line = "你好,世界";
        byte[] data = line.getBytes(StandardCharsets.UTF_8);
        bos.write(data);
        /*强制写出,因为如果不flush,缓冲流里会积攒数据,导致数据不能及时写出,
        * 低级流不存在缓冲区问题,如果用缓冲流,要保证及时性时,调用flush比较好,
        * 但是flush的次数多了,肯定会影响效率,假如是复制文件,还是调用close比较好,
        * 比如是qq等及时聊天工具,可以以及时性为主,效率次之
        * close方法里有调用flush,如何选择flush还是close看实际的应用场景*/
        bos.flush();
        System.out.println("写出完毕");
    }
}
